#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMap>

namespace Ui {
class Widget;
}

typedef struct CHECK_INFO {

} checkInfo;

class Widget : public QWidget
{
    Q_OBJECT

    struct TableValue {
        QString document;       // 文档
        QString description;    // 描述
        QString explain;        // 说明
        QString kind;           // 种类、类别
    };

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

    /// 文本替换和图片替换
    bool replaceInDocx(const QString &templatePath,
                      const QString &outputPath,
                      const QMap<QString, QString> &textReplacements,
                      const QMap<QString, QString> &imageReplacements = QMap<QString, QString>());

    /// docx转pdf
    bool convertDocxToPdf(const QString &docxPath, const QString &pdfOutputDir);

    // 起始函数
    void generateReport();

    /// 拷贝文件
    bool copyWithOverwrite(const QString &source, const QString &destination);

    /// 表格文本替换
    bool replayTableIndex(const QString &templatePath, QList<TableValue> TableData);

    /// 无密码压缩文件
    bool compressFile(const QString &zipPath, const QString &sourceDir);
    /// 无密码解压文件
    bool extractFile(const QString &zipPath, const QString &targetDir);

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H
